home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / util / rexx / PGPwithYAM.lha / PGPwithYAM / source / SplitMail.e
Text File  |  1997-06-18  |  2KB  |  130 lines

  1. /******************************************\
  2.  *                                        *
  3. \******************************************/
  4.  
  5. -> PROC Module
  6. MODULE 'dos/dos'
  7. MODULE 'utility/tagitem'
  8. MODULE 'intuition/intuition'
  9. -> ENDPROC
  10. -> PROC #defines
  11. -> ENDPROC
  12. -> PROC Raises
  13. RAISE "ARGS" IF ReadArgs()=NIL,
  14.       "FILE" IF Open()=NIL
  15. -> ENDPROC
  16. -> PROC Objekte
  17. OBJECT rdargs
  18.   readargs,
  19.   args[1]: ARRAY OF LONG
  20. ENDOBJECT
  21.  
  22. OBJECT files
  23.   fin,fhead,fbody,
  24.   buffer
  25. ENDOBJECT
  26. -> ENDPROC
  27. -> PROC Konstante
  28. CONST KICKVERSION=39
  29. -> ENDPROC
  30. -> PROC Variable
  31. -> ENDPROC
  32. -> PROC Instanzen
  33. DEF rdargs: PTR TO rdargs,
  34.     files:  PTR TO files
  35. -> ENDPROC
  36.  
  37. /*
  38. ** Methoden
  39. */
  40. PROC get(str) OF rdargs
  41.   self.readargs:=ReadArgs(str,self.args,NIL)
  42. ENDPROC
  43. PROC end() OF rdargs
  44.   IF self.readargs THEN FreeArgs(self.readargs)
  45. ENDPROC
  46.  
  47. CHAR '$VER: SplitMail 1.0 (18.6.97) by Michael Praschl'
  48.  
  49. PROC bodycopy() OF files
  50.   DEF ok
  51.  
  52.   REPEAT
  53.     ok:=self.read()
  54.     IF ok>=0 THEN self.write(self.fbody)
  55.   UNTIL (ok=-1)
  56.  
  57. ENDPROC
  58. PROC headcopy() OF files
  59.   DEF ok
  60.  
  61.   REPEAT
  62.     ok:=self.read()
  63.     IF ok>=0 THEN self.write(self.fhead)
  64.   UNTIL (ok=-1) OR (ok=1)
  65.  
  66. ENDPROC ok
  67. PROC write(out) OF files
  68.   Fputs(out,self.buffer)
  69. ENDPROC
  70. PROC read() OF files
  71.   DEF ok
  72.  
  73.   ok:=Fgets(self.fin,self.buffer,200)
  74.  
  75. ENDPROC IF ok THEN StrLen(self.buffer) ELSE -1      /* Eof() = -1 */
  76. PROC open(finname) OF files
  77.   self.buffer:=String(200)
  78.   IF self.buffer=NIL THEN Raise("MEM")
  79.  
  80.   self.fin:=Open(finname,OLDFILE)
  81.   self.fhead:=Open('ram:head',NEWFILE)
  82.   self.fbody:=Open('ram:body',NEWFILE)
  83. ENDPROC
  84. PROC end() OF files
  85.   IF self.fin    THEN Close(self.fin)
  86.   IF self.fhead  THEN Close(self.fhead)
  87.   IF self.fbody  THEN Close(self.fbody)
  88.   IF self.buffer THEN DisposeLink(self.buffer)
  89. ENDPROC
  90.  
  91. /*
  92. ** Prozeduren
  93. */
  94. PROC open_all()
  95.   NEW rdargs
  96.   rdargs.get('FILENAME/A')
  97.  
  98.   NEW files
  99.   files.open(rdargs.args[0])
  100.   files.headcopy()
  101.   files.bodycopy()
  102. ENDPROC
  103. PROC close_all()
  104.   END files
  105.  
  106.   END rdargs
  107. ENDPROC
  108.  
  109. /*****************\
  110.  * Hauptprogramm *
  111. \*****************/
  112. PROC main() HANDLE
  113.   IF KickVersion(KICKVERSION)=FALSE THEN Raise("KICK")
  114.   open_all()
  115. EXCEPT DO
  116.   close_all()
  117.   IF exception
  118.     SELECT exception
  119.       CASE "KICK"
  120.         WriteF('Kickstart V\d++ required!\n',KICKVERSION)
  121.       CASE "NIL"
  122.         WriteF('NILpointer in line \d\n',exceptioninfo)
  123.       DEFAULT
  124.         WriteF('Exception ')
  125.         Write(stdout,{exception},4)
  126.         WriteF(' raised!\n')
  127.     ENDSELECT
  128.   ENDIF
  129. ENDPROC
  130.